Github Actions
介绍
Github Action 是 Github 推出的持续集成 (CI) 工具
# 定义 Workflow 的名字
name: Greeting from Mona
# 定义 Workflow 的触发器
on: push
# 定义 Workflow 的 job
jobs:
# 定义 job 的 id
my-job:
# 定义 job 的 name
name: My Job
# 定义 job 的运行环境
runs-on: ubuntu-latest
# 定义 job 的运行 step
steps:
# 定义 step 的名称
- name: Print a greeting
# 定义 step 的环境变量
env:
MY_VAR: Hi there! My name is
FIRST_NAME: Mona
MIDDLE_NAME: The
LAST_NAME: Octocat
# 运行指令:输出环境变量
run: |
echo $MY_VAR $FIRST_NAME $MIDDLE_NAME $LAST_NAME.
Workflow
Workflow 是由一个或多个 job 组成的可配置的自动化过程。我们通过创建 YAML 文件来创建 Workflow 配置。
名字
name
Workflow 的名称,Github 在存储库的 Action 页面上显示 Workflow 的名称。
如果我们省略 name,则 Github 会将其设置为工作流文件名。
name: Greeting from Mona
on: push
触发器
on
触发 Workflow 执行的 event 名称
# 单个事件
on: push
# 多个事件
on: [push,pull_request]
活动类型和筛选器
必须为所有事件附加冒号 (:
),包括没有配置的事件
on:
label:
types:
- created
push:
branches:
- main
page_build:
job
job 是一次持续集成的运行,可以完成多个任务。一个 Workflow 由一个或多个 jobs 构成
默认情况下,作业没有依赖关系,并且彼此并行运行。 当一个作业依赖于另一个作业时,它将等待从属作业完成,然后才能运行。
定义
jobs.<job_id>
jobs:
my_first_job: # job id
name: My first job
my_second_job:
name: My second job
上面的 my_first_job 和 my_second_job 就是 job_id
job 通过 id 被定义。
命名
jobs.<job_id>.name
name 会显示在 Github 上
依赖
jobs.<job_id>.needs
needs 可以标识 job 是否依赖于别的 job
如果某一 job 失败,则会跳过所有需要该 job 的 job。
jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]
输出
jobs.<jobs_id>.outputs
outputs 用于和 needs 打配合,outputs 输出 → needs 输入
jobs:
job1:
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
output1: ${{ steps.step1.outputs.test }}
output2: ${{ steps.step2.outputs.test }}
steps:
- id: step1
run: echo "::set-output name=test::hello"
- id: step2
run: echo "::set-output name=test::world"
job2:
runs-on: ubuntu-latest
needs: job1
steps:
- run: echo ${{needs.job1.outputs.output1}} ${{needs.job1.outputs.output2}}